package jobascjp;

class Fizz {
    int x = 5;
    public static void main(String[] args) { 
        final Fizz f1 = new Fizz();
        Fizz f2 = new Fizz();
        Fizz f3 = FizzSwitch(f1,f2);
        System.out.println((f1 == f3) + " " + (f1.x == f3.x));
    }
    static Fizz FizzSwitch(Fizz x, Fizz y) {
        final Fizz z = x; 
        z.x = 6;
        return z;
    }
    
    /*
     * What is the result?
     * true true // korrekt
     * false true
     * true false
     * false false
     * Compilation fails
     * An exception is thrown at runtime.
     * 
     * Anmerkungen:
     * f1, z, f3 beziehen sich alle auf die gleiche Fizz-Instanz. final sichert,
     * dass immer dieses Objekt referenziert werden muss, aber der Objektzustand
     * ist weiterhin aenderbar!
     */
}
